<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>简单折线</title>
</head>
<script charset="utf-8" src="https://map.qq.com/api/gljs?key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&v=1.exp"></script>
<style>
	html,
	body {
		height: 100%;
		margin: 0px;
		padding: 0px;
	}

	#mapContainer {
		width: 100%;
		height: 100%;
	}
</style>

<body onload="initMap()">
	<div id="mapContainer"></div>
  <button id="edit">修改中心点</button>
</body>

</html>
<script>
  	var map
    var polylineLayer
    const geometries = [
				{//第1条线
					'id': 'pl_1',//折线唯一标识，删除时使用
					'styleId': 'style_blue',//绑定样式名
					'paths': [new TMap.LatLng(40.038540, 116.272389), new TMap.LatLng(40.038844, 116.275210), new TMap.LatLng(40.041407, 116.274738)]
				},
				{//第2条线
					'id': 'pl_2',	
					'styleId': 'style_red',
					'paths': [new TMap.LatLng(40.039492,116.271893), new TMap.LatLng(40.041562,116.271421), new TMap.LatLng(40.041957,116.274211)]
				}
			]
  const btn=document.querySelector('#edit')
  function adjustCoordinatesToNewCenter(oldCenter, newCenter, data1) {
    let data=JSON.parse(JSON.stringify(data1));
  // 计算经度和纬度的差值
  const lngDiff = newCenter.lng - oldCenter.lng;
  const latDiff = newCenter.lat - oldCenter.lat;

  // 处理折线数据中的每个坐标点
  function adjustCoordinate(coordinate) {
    coordinate.lat+=latDiff
    coordinate.lng+=lngDiff
    // if (!isCoordinateWithinCityBounds(coordinate, cityBounds)) { // 如果不在城市范围内
    //   // 将坐标点移动到最近的城市边界点
    //   // const nearestBoundary = findNearestCityBoundary(coordinate, cityBounds);
    //   coordinate.lat = nearestBoundary.lat;
    //   coordinate.lng = nearestBoundary.lng;
    // }
    console.log('====',coordinate)
  }

  // 处理折线数据
  for (const item of data) {
    if (item.lat !== undefined && item.lng !== undefined) {
      // 单个坐标点
      adjustCoordinate(item);
    } else if (item.paths) {
      // 坐标点集合
      console.log('几何',item.paths)
      for (const path of item.paths) {
        adjustCoordinate(path);
        console.log('ii',item)
      }
    }
  }
   console.log('data',data)
  return data;
}
function initMap() {
		//初始化地图
		map = new TMap.Map('mapContainer', {
			center: new TMap.LatLng(40.040452,116.273486),//地图显示中心点
			zoom:16	//缩放级别
		});

		//创建 MultiPolyline
		polylineLayer = new TMap.MultiPolyline({
			id: 'polyline-layer', //图层唯一标识
			map: map,//绘制到目标地图
			//折线样式定义
			styles: {
				'style_blue': new TMap.PolylineStyle({
					'color': '#3777FF', //线填充色
					'width': 6, //折线宽度
					'borderWidth': 5, //边线宽度
					'borderColor': '#FFF', //边线颜色
					'lineCap': 'butt' //线端头方式
				}),
				'style_red': new TMap.PolylineStyle({
					'color': '#CC0000', //线填充色
					'width': 6, //折线宽度
					'borderWidth': 5, //边线宽度
					'borderColor': '#CCC', //边线颜色
					'lineCap': 'round' //线端头方式
				})
			},
			//折线数据定义
			geometries
		});
    }
  btn.addEventListener('click',getEdit)
  function getEdit(){
    const res=adjustCoordinatesToNewCenter(new TMap.LatLng(40.040452,116.273486),new TMap.LatLng(22.539099,114.11092),geometries)
    console.log('？？？？',res)
    // map.setCenter(new TMap.LatLng(22.608622,114.030451))
    // console.log('////',polylineLayer)
    polylineLayer.setGeometries(res)
    var latlngBounds = new TMap.LatLngBounds();
//将坐标逐一做为参数传入extend方法，latlngBounds会根据传入坐标自动扩展生成
for(var i = 0;i<res.length; i++){
  for(let j=0;j<res[i].paths.length;j++){
    console.log('1',res[i].paths[j])
    latlngBounds.extend(new TMap.LatLng(res[i].paths[j].lat,res[i].paths[j].lng));  
  }
}
console.log('我想看的值',latlngBounds);
// 调用fitBounds自动调整地图显示范围
map.fitBounds(latlngBounds);
console.log('原始',geometries);
console.log('修改',res);

  }

</script>